import { apiClient, setAccessToken, setRefreshToken } from 'axiom-view';

// 从 axiom-view v0.1.0 移动过来的，现在是 demo 应用自己的业务逻辑
const OAUTH_TOKEN_URL = '/oauth/token';

/**
 * [重构] 这是 demo 应用自己的登录逻辑
 * @param {string} username - 用户名
 * @param {string} password - 密码
 * @param {object} authConfig - 包含 clientId 和 clientSecret 的认证配置
 * @returns {Promise<void>}
 */
export async function loginByPassword(username, password, authConfig) {
  const { clientId, clientSecret } = authConfig;
  // [修复] 根据后端要求，将请求体改为 application/json 格式
  const payload = {
    username,
    password,
    grant_type: 'password',
    client_id: clientId,
    client_secret: clientSecret,
  };

  // apiClient 默认使用 application/json，无需特殊配置
  const response = await apiClient.post(OAUTH_TOKEN_URL, payload);

  if (response && response.data) {
    // [最终修复] 使用从 axiom-view 显式导入的函数
    setAccessToken(response.data.access_token);
    setRefreshToken(response.data.refresh_token);
  } else {
    // 抛出错误，以便上层可以捕获
    throw new Error('登录失败，未能获取到 Token。');
  }
} 